; Disassembly of the file "z:\ramdisk\home\knoppix\none\System tracks analysis\Sector_1_Track_00_Side_0.hexdump.bin"
; 
; CPU Type: Z80
; 
; Using the opcode map file "z:\ramdisk\home\knoppix\none\System tracks analysis\Sector_1_Track_00_Side_0.hexdump.opmap"
; ; Created with dZ80 2.0
; 
; on Saturday, 15 of June 2013 at 11:09 AM
; 
0000 CD8B00    CALL    $008B
0003 80        ADD     A,B
0004 00        NOP     
0005 CD06D1    CALL    $D106

0008 43        DB      $43
0009 4F        DB      $4F
000A 42        DB      $42
000B 52        DB      $52
000C 41        DB      $41
000D 20        DB      $20
000E 35        DB      $35
000F 33        DB      $33
0010 4B        DB      $4B
0011 20        DB      $20
0012 43        DB      $43
0013 50        DB      $50
0014 2F        DB      $2F
0015 4D        DB      $4D
0016 20        DB      $20
0017 32        DB      $32
0018 2E        DB      $2E
0019 32        DB      $32
001A 20        DB      $20
001B 20        DB      $20
001C 31        DB      $31
001D 39        DB      $39
001E 39        DB      $39
001F 33        DB      $33
0020 20        DB      $20
0021 20        DB      $20
0022 20        DB      $20
0023 20        DB      $20
0024 20        DB      $20
0025 20        DB      $20
0026 20        DB      $20
0027 20        DB      $20
0028 20        DB      $20
0029 20        DB      $20
002A 20        DB      $20
002B 20        DB      $20
002C 20        DB      $20
002D 20        DB      $20
002E 20        DB      $20
002F 20        DB      $20
0030 00        DB      $00
0031 00        DB      $00
0032 00        DB      $00
0033 00        DB      $00
0034 00        DB      $00
0035 00        DB      $00
0036 00        DB      $00
0037 00        DB      $00
0038 00        DB      $00
0039 00        DB      $00
003A 00        DB      $00
003B 00        DB      $00
003C 00        DB      $00
003D 00        DB      $00
003E 00        DB      $00
003F 00        DB      $00
0040 00        DB      $00
0041 00        DB      $00
0042 00        DB      $00
0043 00        DB      $00
0044 00        DB      $00
0045 00        DB      $00
0046 00        DB      $00
0047 00        DB      $00
0048 00        DB      $00
0049 00        DB      $00
004A 00        DB      $00
004B 00        DB      $00
004C 00        DB      $00
004D 00        DB      $00
004E 00        DB      $00
004F 00        DB      $00
0050 00        DB      $00
0051 00        DB      $00
0052 00        DB      $00
0053 00        DB      $00
0054 00        DB      $00
0055 00        DB      $00
0056 00        DB      $00
0057 00        DB      $00
0058 00        DB      $00
0059 00        DB      $00
005A 00        DB      $00
005B 00        DB      $00
005C 00        DB      $00
005D 00        DB      $00
005E 00        DB      $00
005F 00        DB      $00
0060 00        DB      $00
0061 00        DB      $00
0062 00        DB      $00
0063 00        DB      $00
0064 00        DB      $00
0065 00        DB      $00
0066 00        DB      $00
0067 00        DB      $00
0068 00        DB      $00
0069 00        DB      $00
006A 00        DB      $00
006B 00        DB      $00
006C 00        DB      $00
006D 00        DB      $00
006E 00        DB      $00
006F 00        DB      $00
0070 00        DB      $00
0071 00        DB      $00
0072 00        DB      $00
0073 00        DB      $00
0074 00        DB      $00
0075 00        DB      $00
0076 00        DB      $00
0077 00        DB      $00
0078 00        DB      $00
0079 00        DB      $00
007A 00        DB      $00
007B 00        DB      $00
007C 00        DB      $00
007D 00        DB      $00
007E 00        DB      $00
007F 00        DB      $00
0080 00        DB      $00
0081 00        DB      $00
0082 00        DB      $00
0083 00        DB      $00
0084 00        DB      $00
0085 00        DB      $00
0086 00        DB      $00
0087 00        DB      $00
0088 00        DB      $00
0089 20        DB      $20
008A 00        DB      $00

008B F3        DI
008C 3E40      LD      A,$40
008E D3FE      OUT     ($FE),A	; set O6 to 1 (VRAM CPU access)
0090 210040    LD      HL,$4000
0093 110140    LD      DE,$4001
0096 01FFBF    LD      BC,$BFFF
0099 3600      LD      (HL),$00
009B EDB0      LDIR		; erase 4000-FFFF (fill with zeros, black the CP/M screen)
009D 210002    LD      HL,$0200
00A0 1100C9    LD      DE,$C900	;
00A3 010035    LD      BC,$3500	; copy 3500h bytes (sec2/cyl00/side0-[1/2sec1]/cyl01/side1)
00A6 EDB0      LDIR		; from 0200 to C900 (26 1/2 sectors, CCP+BDOS+BIOS)
00A8 3100A0    LD      SP,$A000	; stack at A000
00AB 210002    LD      HL,$0200
00AE 110860    LD      DE,$6008
00B1 0680      LD      B,$80	; 80h loops next
00B3 C5        PUSH    BC	; <--- <--- <--- <--- <--- <--- <---|
00B4 011000    LD      BC,$0010	;				    | this copies 16 bytes
00B7 EDB0      LDIR		; copy 16 bytes from 0200 to 6008   | at once from:
00B9 EB        EX      DE,HL	; \ 				    | 0200 to 6008	this is a backup
00BA 011000    LD      BC,$0010	;  \ DE is			    | 0210 to 6028	of CCP
00BD 09        ADD     HL,BC	;  / incremented		    | 0220 to 6048	stored interleaved
00BE EB        EX      DE,HL	; /  by 10h			    |	...		in second VRAM page
00BF C1        POP     BC	;				    |	...
00C0 10F1      DJNZ    $00B3	; ---> ---> ---> ---> ---> ---> --->| 09F0 to 6FE8
00C2 210037    LD      HL,$3700	; copy 476h bytes from 3700
00C5 11005B    LD      DE,$5B00	; (100h in sector 1 cyl 1 side 1)
00C8 017604    LD      BC,$0476	; to 5B00 (BLOCK#1)
00CB EDB0      LDIR		; this is free space above VRAM page 1 (5B00-5FFF)
00CD 21763B    LD      HL,$3B76	; copy 4FFh bytes from 3B76
00D0 11007B    LD      DE,$7B00	; (176h in sector 3 cyl 1 side 1)
00D3 01FF04    LD      BC,$04FF	; to 7B00 (BLOCK#2)
00D6 EDB0      LDIR		; this is free space above VRAM page 2 (7B00-7FFF)
00D8 2103DF    LD      HL,$DF03	; BIOS WBOOT
00DB 220100    LD      ($0001),HL ; store in (0001-0002)
00DE CD90E6    CALL    $E690	; (E690-C900=1D90, 1C00/200=E so this is 190h in sect 7 cyl 0 side 1)
00E1 2100FC    LD      HL,$FC00	; FC00 is 100h in sec9/cyl01/side0 (0100:  00 01 02 03 02 02 02 02 FF FF FF FF)
00E4 54        LD      D,H
00E5 5D        LD      E,L
00E6 0604      LD      B,$04	; max. 4 loops next
00E8 7E        LD      A,(HL)	; <--- <---| get first drive number
00E9 32F8FD    LD      ($FDF8),A ;	   | copy to FDF8 (first arg for 8272 command in routine $5CBE)
00EC D9        EXX		;	   |
00ED CDBE5C    CALL    $5CBE	;	   | send a Sense Drive Status command and read results
00F0 D9        EXX		;	   |
00F1 2005      JR      NZ,$00F8	; --->|    | if READY skip fwd
00F3 23        INC     HL	;     |    | pointer to next drive no.
00F4 10F2      DJNZ    $00E8	; -------->|
00F6 18E9      JR      $00E1	;     |
00F8 7E        LD      A,(HL)	; <---|	HL=FC0x points to drive number found READY
00F9 3600      LD      (HL),$00	; (FC0x)=00
00FB 12        LD      (DE),A	; (FC00)=drive number found READY
00FC 210400    LD      HL,$0004
00FF 19        ADD     HL,DE	; HL=0004+FC00=FC04
0100 77        LD      (HL),A	; (FC04)=drive number found READY
0101 23        INC     HL
0102 77        LD      (HL),A	; (FC05)=drive number found READY
0103 5D        LD      E,L	; E=05
0104 23        INC     HL
0105 77        LD      (HL),A	; (FC06)=drive number found READY
0106 23        INC     HL
0107 56        LD      D,(HL)	; D=(FC07)=02
0108 77        LD      (HL),A	; (FC07)=drive number found READY
0109 2198FD    LD      HL,$FD98	; CTC interrupt table start address
010C ED5E      IM      2
010E 7C        LD      A,H	; upper half of CTC interrupt table start address (FD)...
010F ED47      LD      I,A	; ...is stored in register I (see Z80 docs)
0111 7D        LD      A,L	; lower half of CTC interrupt table start address (98)...
0112 D3E3      OUT     ($E3),A	; ...is sent to CTC channel 0
				; MEANING: Interrupt Vector being used by all 4 channels!!
				; Interrupt Vector = 10011cc0 where cc is the CTC channel.
				; requesting the interrupt. So interrupt vector for
				; CTC0 = FD98, CTC1 = FD9A, CTC2 = FD9C, CTC3 = FD9E
0114 3E7F      LD      A,$7F	; data for CTC0 on next line: set CTC0 to counter mode
				; and disable CTC0 interrupts, time const. follows
0116 D3E3      OUT     ($E3),A
0118 3E01      LD      A,$01	; CTC0 time constant (one int. per one byte read)...
011A D3E3      OUT     ($E3),A	; ...sent to CTC0
011C 3E7B      LD      A,$7B	; data for CTC1+2 (disable int. no time const. follows)...
011E D3EB      OUT     ($EB),A	; ...sent to CTC1...
0120 D3F3      OUT     ($F3),A	; ...and CTC2
0122 3E7F      LD      A,$7F	; data for CTC3 (disable int. time const. follows)...
0124 D3FB      OUT     ($FB),A	; ...is sent to CTC3
0126 3E01      LD      A,$01	; time constant for CTC3...
0128 D3FB      OUT     ($FB),A	; ...is sent to CTC3
012A 3AF8FD    LD      A,($FDF8) ; first arg of 8272 command (head#, drive#)...
012D E603      AND     $03	; ...is filtered for drive# only...
012F F630      OR      $30	; ...and bits 4, 5 set (30h = ASCII code for "0")
0131 322D7F    LD      ($7F2D),A ; (7F2D) holds the "2" in "Insert disk E in drive 2:" (1A3 in sec5/cyl01/side1)
0134 CB4F      BIT     1,A	; test if drive 2 or 3
0136 3E00      LD      A,$00
0138 21EADF    LD      HL,$DFEA	; 	     ** $DFEA = start addr of DPB #0-#1
013B 2805      JR      Z,$0142	; ---> --->|
013D F640      OR      $40	;	   | set bit 6 if drive 2,3
013F 21CADF    LD      HL,$DFCA	;	   | ** $DFCA = start addr of DPB #2-#7
0142 2259DF    LD      ($DF59),HL ; <--- <-| HL=DFEA if drive 0,1, HL=DFCA if drive 2,3
0145 224AFB    LD      ($FB4A),HL
0148 2B        DEC     HL	; * DE=DFF9 if drive 0,1 or
0149 56        LD      D,(HL)	; * DE=DFD9 if drive 2,3
014A 2B        DEC     HL	; * (DFF9 is base addr of XLT #0-#1, 26 sec/trk, skew=6)
014B 5E        LD      E,(HL)	; * (DFD9 is base addr of XLT #2-#4, 9 sec/trk, skew=2)
014C ED5340FB  LD      ($FB40),DE ; (FB40-FB41) have XLT #4 base
0150 216101    LD      HL,$0161	; 0161=addr of "COBRA 53K CP/M 2.2  1993" message (sec0/cyl00/side0)
0153 CD3D5F    CALL    $5F3D	; print message
0156 3E40      LD      A,$40
0158 D3FE      OUT     ($FE),A	; set O6=1 (VRAM CPU access) - because O6 reset by print message above
015A AF        XOR     A
015B 3240DF    LD      ($DF40),A
015E CD625F    CALL    $5F62	; erase 0008-3FF8 and jump to WBOOT

0161 43        DB      $43
0162 4F        DB      $4F
0163 42        DB      $42
0164 52        DB      $52
0165 41        DB      $41
0166 20        DB      $20
0167 35        DB      $35
0168 33        DB      $33
0169 4B        DB      $4B
016A 20        DB      $20
016B 43        DB      $43
016C 50        DB      $50
016D 2F        DB      $2F
016E 4D        DB      $4D
016F 20        DB      $20
0170 32        DB      $32
0171 2E        DB      $2E
0172 32        DB      $32
0173 20        DB      $20
0174 20        DB      $20
0175 31        DB      $31
0176 39        DB      $39
0177 39        DB      $39
0178 33        DB      $33
0179 20        DB      $20
017A 20        DB      $20
017B 20        DB      $20
017C 20        DB      $20
017D 20        DB      $20
017E 20        DB      $20
017F 20        DB      $20
0180 20        DB      $20
0181 20        DB      $20
0182 20        DB      $20
0183 00        DB      $00
0184 46        DB      $46
0185 77        DB      $77
0186 23        DB      $23
0187 56        DB      $56
0188 77        DB      $77
0189 21        DB      $21
018A 98        DB      $98
018B C3        DB      $C3
018C 72        DB      $72
018D 65        DB      $65
018E 63        DB      $63
018F 61        DB      $61
0190 6C        DB      $6C
0191 69        DB      $69
0192 62        DB      $62
0193 72        DB      $72
0194 61        DB      $61
0195 74        DB      $74
0196 65        DB      $65
0197 09        DB      $09
0198 00        DB      $00
0199 72        DB      $72
019A 65        DB      $65
019B 61        DB      $61
019C 64        DB      $64
019D 20        DB      $20
019E 69        DB      $69
019F 64        DB      $64
01A0 09        DB      $09
01A1 00        DB      $00
01A2 77        DB      $77
01A3 72        DB      $72
01A4 69        DB      $69
01A5 74        DB      $74
01A6 65        DB      $65
01A7 09        DB      $09
01A8 00        DB      $00
01A9 72        DB      $72
01AA 65        DB      $65
01AB 61        DB      $61
01AC 64        DB      $64
01AD 09        DB      $09
01AE 00        DB      $00
01AF 66        DB      $66
01B0 64        DB      $64
01B1 63        DB      $63
01B2 00        DB      $00
01B3 66        DB      $66
01B4 64        DB      $64
01B5 64        DB      $64
01B6 00        DB      $00
01B7 64        DB      $64
01B8 72        DB      $72
01B9 69        DB      $69
01BA 76        DB      $76
01BB 65        DB      $65
01BC 20        DB      $20
01BD 6E        DB      $6E
01BE 6F        DB      $6F
01BF 74        DB      $74
01C0 20        DB      $20
01C1 72        DB      $72
01C2 65        DB      $65
01C3 61        DB      $61
01C4 64        DB      $64
01C5 79        DB      $79
01C6 00        DB      $00
01C7 64        DB      $64
01C8 65        DB      $65
01C9 6E        DB      $6E
01CA 73        DB      $73
01CB 69        DB      $69
01CC 74        DB      $74
01CD 79        DB      $79
01CE 00        DB      $00
01CF 61        DB      $61
01D0 62        DB      $62
01D1 6E        DB      $6E
01D2 6F        DB      $6F
01D3 72        DB      $72
01D4 6D        DB      $6D
01D5 61        DB      $61
01D6 6C        DB      $6C
01D7 00        DB      $00
01D8 6F        DB      $6F
01D9 76        DB      $76
01DA 65        DB      $65
01DB 72        DB      $72
01DC 72        DB      $72
01DD 75        DB      $75
01DE 6E        DB      $6E
01DF 00        DB      $00
01E0 70        DB      $70
01E1 72        DB      $72
01E2 6F        DB      $6F
01E3 74        DB      $74
01E4 65        DB      $65
01E5 63        DB      $63
01E6 74        DB      $74
01E7 00        DB      $00
01E8 65        DB      $65
01E9 6E        DB      $6E
01EA 64        DB      $64
01EB 20        DB      $20
01EC 6F        DB      $6F
01ED 66        DB      $66
01EE 20        DB      $20
01EF 74        DB      $74
01F0 72        DB      $72
01F1 61        DB      $61
01F2 63        DB      $63
01F3 6B        DB      $6B
01F4 00        DB      $00
01F5 61        DB      $61
01F6 64        DB      $64
01F7 64        DB      $64
01F8 72        DB      $72
01F9 65        DB      $65
01FA 73        DB      $73
01FB 73        DB      $73
01FC 20        DB      $20
01FD 6D        DB      $6D
01FE 61        DB      $61
01FF 72        DB      $72